package com.chenfan.mcn.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chenfan.mcn.dao.StarBasicDataMapper;
import com.chenfan.common.extension.mybatisplus.enhanced.EnhancedService;
import com.chenfan.mcn.model.McnPage;
import com.chenfan.mcn.model.StarBasicData;
import com.chenfan.mcn.model.StarPlatformSettlementInfo;
import com.chenfan.mcn.model.dto.KocStarInputDTO;
import com.chenfan.mcn.model.dto.StarBasicDataDTO;
import com.chenfan.mcn.model.dto.StarBasicDataInfoInputDTO;
import com.chenfan.mcn.model.dto.StarBasicDataSearchDTO;
import com.chenfan.mcn.model.vo.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @Author liuyang
 * @Date 2021/1/7
 * @Time 19:04
 * @Version V1.0
 **/
public interface StarBasicDataService extends EnhancedService<StarBasicDataMapper, StarBasicData> {

    /**
     * 红人资料列表
     *
     * @param page         请求参数
     * @param searchDTO 请求参数
     * @return 返回值
     */
    Page<StarBasicDataVO> getList(McnPage<StarBasicDataVO> page, StarBasicDataSearchDTO searchDTO);

    /**
     * 删除红人资料信息
     *
     * @param starId 请求参数
     * @return 返回值
     */
    int delete(Long starId);

    /**
     * 详情
     *
     * @param starId 请求参数
     * @return 返回值
     */
    StarBasicDataInfoVO info(Long starId);

    /**
     * 导出列表数据
     * @param basicDataDto
     * @param response
     * @return
     * @throws Exception
     */
    List<StarBasicDataExportVO> exportExcel(StarBasicDataSearchDTO basicDataDto, HttpServletResponse response) throws Exception;

    /**
     * 红人列表执行单导出
     *
     * @param basicDataDto 请求参数
     * @param response     请求参数
     * @return
     * @throws Exception 抛出异常
     */
    void exportExecuteOrderExcel(StarBasicDataSearchDTO basicDataDto, HttpServletResponse response) throws Exception;


    /**
     * 导出-红人平台信息
     *
     * @param basicDataDto 请求参数
     * @param response     请求参数
     * @throws Exception 抛出异常
     */
    void exportPlatformInfo(StarBasicDataSearchDTO basicDataDto, HttpServletResponse response) throws Exception;

    /**
     * 新增红人基础资料
     *
     * @param starBasicDataDTO 请求参数
     * @return long
     */
    Long saveData(StarBasicDataDTO starBasicDataDTO);

    /**
     * 修改红人基础资料
     *
     * @param starBasicDataDTO 请求参数
     * @throws Exception
     */
    Long updateData(StarBasicDataDTO starBasicDataDTO);


    /**
     * 红人执行单列表
     *
     * @param page   {@link McnPage}
     * @param starId {@link Long}
     * @return {@link Page}
     */
    Page<StarExecutionVO> executionList(McnPage<StarExecutionVO> page, Long starId);

    /**
     * 启用禁用
     *
     * @param id         {@link Long}
     * @param starStatus {@link Integer}
     */
    void updateStatus(Long id, Integer starStatus);

    /**
     * 批量根据红人ID集合获取红人昵称信息
     * @param starIds
     * @return
     */
    List<StarNickNameVO> getStarNickNamesByIds(List<Long> starIds);


    /**
     * 批量导入KOC红人
     * @param inputList
     * @return
     */
    String importKocExcel(List<KocStarInputDTO> inputList);

    /**
     * 下载失败原因-批量导入KOC红人
     * @param response
     * @param fileId
     */
    void downloadKocFailedReason(HttpServletResponse response, String fileId);


    /**
     * 批量导入KOC红人
     * @param inputList
     * @return
     */
    String importStarBasicDataInfoExcel(List<StarBasicDataInfoInputDTO> inputList);

    /**
     * 红人平台结算信息的启用禁用
     * @param id
     * @param starStatus
     */
    void updatePlatformSettlementStatus(Long id, Integer starStatus);

    /**
     * 根据红人平台ID获取对应结算信息列表
     * @param platformId
     * @return
     */
    List<StarPlatformSettlementInfo> getPlatSettlementsByPlatId(Long platformId);

    /**
     * 导出-红人平台信息
     * @param basicDataDto
     * @return
     */
    List<StarSignContractExportVO> exportSignContract(StarBasicDataSearchDTO basicDataDto);
}
